package day_2022_12_to_3.day;

import java.util.TreeSet;

/**
 * @author haomin
 * @date 2022/12/30 23:32
 **/
public class Day12_30_Num855 {
    class ExamRoom {
        // 确定教室座位 0~n-1
        TreeSet<Integer> set;
        int size;
        public ExamRoom(int n) {
            set=new TreeSet<>();
            size=n-1;
        }
        // 分配座位
        public int seat() {
            // 初始座位
            int index = 0;
            // 判断教室是否有人
            if(set.size()>0){
                // 默认第一个为最大距离
                Integer dist = set.first();
                Integer pre = null;
                for (Integer s : set) {
                    if(pre!=null){
                        // 计算距离 上一个坐标和当前坐标
                        int d = (s-pre)>>1;
                        if(d>dist){
                            dist=d;
                            index=(s+pre)>>1;
                        }
                    }
                    // 记录上一个座位的坐标
                    pre=s;
                }
                // 当只有一个人在教室时
                if(size-set.last()>dist){
                    index=size;
                }
            }
            // 添加座位
            set.add(index);
            return index;

        }
        // 考生离开座位
        public void leave(int p) {
            set.remove(p);
        }
    }
}